package HumanLanguage;

abstract class Human {//定义一个抽象类Human
    String name;//定义一个成员变量String name
    public Human(String name){//定义一个构造方法，用于初始化姓名name
        this.name = name;
    }
    public abstract double sayHi();//定义一个抽象方法，该方法的返回值为double，无参数。
}

class Chinese extends Human{//创建一个Human的子类Chinese
    public Chinese(String name) {//在子类的构造方法中调用父类的构造方法
        super(name);
    }
    public double sayHi() {//重写父类中抽象方法sayHi()
        System.out.println("你好！");//输出中文问候
        return "你好！".length();//返回输出的字符串长度
    }
}

class Japanese extends Human{//创建一个Human的子类Japanese
    public Japanese(String name) {//在子类的构造方法中调用父类的构造方法
        super(name);
    }
    public double sayHi() {//重写父类中抽象方法sayHi()
        System.out.println("こんにちは！");//输出日文问候
        return "こんにちは！".length();//返回输出的字符串长度
    }
}

class English extends Human{ //创建一个Human的子类English
    public English(String name) {//在子类的构造方法中调用父类的构造方法
        super(name);
    }
    public double sayHi() {//重写父类中抽象方法sayHi()
        System.out.println("Hello！");//输出英文问候
        return "Hello！".length();//返回输出的字符串长度
    }
}

public class TestDemo {
    public static void main(String[] args) {
        //1.分别创建对应的子类对象并实例化
        //2.分别调用sayHi()，输出对应的问候语句，并将返回的字符串长度打印出来
        Chinese people1 = new Chinese("ChinesePeople");
        System.out.println(people1.sayHi());

        Japanese people2 = new Japanese("JapanesePeople");
        System.out.println(people2.sayHi());

        English people3 = new English("EnglishPeople");
        System.out.println(people3.sayHi());
    }
}
